.TH buffer_get 3
.SH NAME
buffer_get \- read binary data from buffer
.SH SYNTAX
.B #include <buffer.h>

ssize_t \fBbuffer_get\fP(buffer* \fIb\fR,char* \fIx\fR,size_t \fIlen\fR);
.SH DESCRIPTION
Normally buffer_get copies data to \fIx\fR[0], \fIx\fR[1], ...,
\fIx\fR[\fIlen\fR-1] from the beginning of a string stored in
preallocated space; removes these \fIlen\fR bytes from the string; and
returns \fIlen\fR.

If, however, the string has fewer than \fIlen\fR (but more than 0)
bytes, buffer_get copies only that many bytes, and returns that number.

If the string is empty, buffer_get first uses a \fBread operation\fR to
feed data into the string. The \fBread operation\fR may indicate end of
input, in which case buffer_get returns 0; or a read error, in which
case buffer_get returns -1, setting \fIerrno\fR appropriately.

The preallocated space and the \fBread operation\fR are specified by
\fIb\fR. You must initialize \fBb\fR using buffer_init before calling
buffer_get (or use the pre-initialized buffer_0).
.SH "SEE ALSO"
buffer_init(3), buffer_feed(3), buffer_peek(3), buffer_seek(3), buffer(3)
